
/**

 * 继承:
 * 从已有类中派生出新的类。继承可以使得子类具有父类的各种属性和方法。
 * 而不需要再次编写相同的代码。在令子类别继承父类别的同时，可以重新定义某些属性，
 * 并重写某些方法，即覆盖父类原有的属性和方法，使其获得与父类不同的功能。
 * 子类继承父类后，子类具有父类属性和方法，然而也同样具备自己所独有的属性和方法
 * 代码得到了共享。提高了代码的重用性，避免了重复书写
 */
/****
 * 类的创建
 * 可读readonly
 * name?:string 可选
 * static 关键
 * 索引签名：[index?:string]:any。批量描述key的一种方式
 * 多重继承
 * super调用及构造器的使用
 * 重写override
 * 重载
 * 抽象类
 * instanceof 识别不同类
 */
// class AAA{
//     name?:string ="AAA";
//     [index:string]:string | undefined |null
// }
// class BBB{
//     name:string ="BBB"
//     age:number =1
// }

// const aa = new AAA()
// const bb = new BBB()
// console.log(aa instanceof AAA)

// function test(aa:AAA){
//     console.log(aa.name);
// }

// test(new BBB())



// abstract class Animal{
//     constructor(){
//     }
//    abstract call():void
// //    call1(){}
// }
// class Dog extends Animal{
//     // call(): void {
//     //     console.log("汪汪汪");
//     // }
//     call(): void {
//         console.log("汪汪汪");
//     }
// }
// class Cat extends Animal{
//     eat(){
//     }
//     call(): void {
//         console.log("喵喵喵");
//     }
    
// }
// const ani:Cat = new Cat()
// ani.eat()

